﻿using RayDen.Library.Components.Surface;
using RayDen.Library.Core;
using RayDen.Library.Core.Primitives;
using RayDen.RayEngine.Core.Types;

namespace RayDen.RayEngine.Engines.PathSpaceMLT
{
    public class PathSamplingTechnique
    {
        public MetropolisPathSampler PathSampler;

        public PathSamplingTechnique(MetropolisPathSampler ps)
        {
            this.PathSampler = ps;
        }

        public virtual bool Match(bool isLight, bool isVolume, BsdfEvent hitEvent)
        {
            return false;
        }

        public virtual void FillRayBuffer(RayBuffer rb)
        {
            
        }

        public virtual void Advance(RayBuffer rb, SampleBuffer sb)
        {
            
        }

        public virtual void Process(ref RayHit rh, ref Vector wo, out bool finishPath, out float pdf)
        {
            finishPath = true;
            pdf = 0f;            
        }
    }
}